package pig.model;

import java.sql.SQLException;

public class PagingBean {
	/**현재 페이지
	 * 페이지당 보여줄 게시물 수 
	 * 페이지 그룹당 페이지 수
	 * 	현재 db에 저장된 총 게시물 수
	 * 검색할 아이디 keyword,	 * 정렬기준 컬럼
	 */
	private int	 nowPage=1;
	private int	 contentNumberPerPage=CommonConstants.CONTENT_NUMBER_PER_PAGE;
	private int	 pageNumberPerPageGroup=CommonConstants.PAGE_NUMBER_PER_PAGEGROUP;
	private int  totalContents;
	private String keyword, flag;
	
	/**
	 * db로부터 전체 게시물 수를 받아오고, 현재 페이지는 client 로부터 받아 생성
	 * 총 게시물수와 현재 페이지 정보를 할당
	 */
	public PagingBean(int totalContents, int nowPage) {
		super();
		this.totalContents = totalContents;
		this.nowPage = nowPage;		
	}	
	
	
	public PagingBean( int totalContents,int nowPage,String keyword,
			String flag) {
		super();
		this.nowPage = nowPage;
		this.totalContents = totalContents;
		this.keyword = keyword;
		this.flag = flag;
	}
	
	
	/**
	 * db로부터 게시물 수 받아오고 , 첫페이지로 생성
	 */
	public PagingBean(int totalContents) {
		super();
		this.totalContents = totalContents;
	}
	
	/**
	 * 현재 페이지 리턴
	 */
	public int getNowPage(){
		return nowPage;
	}


	/**
	 * 총 페이지 수를 return한다.
	 */
	public int getTotalPage(){
		int totalPage=0;		
		int nmg = totalContents%contentNumberPerPage;
		if(nmg==0){
			totalPage=totalContents/contentNumberPerPage;
		}else{
			totalPage=totalContents/contentNumberPerPage+1;
		}
		return totalPage;
	}
	
	/**
	 * 총 페이지 그룹의 수를 return한다.
	 */
	public int getTotalPageGroup(){
		int totalPage = getTotalPage();
		int totalPageGroup=0;
		int nmg = totalPage%this.pageNumberPerPageGroup;
		if(nmg==0){
			totalPageGroup=totalPage/this.pageNumberPerPageGroup;
		}else{
			totalPageGroup=totalPage/this.pageNumberPerPageGroup+1;
		}
		return totalPageGroup;
	}
	
	/**
	 * 현재 페이지가 속한 페이지 그룹 번호(몇 번째 페이지 그룹인지) 을 return 하는 메소드 
	 */
	public int getNowPageGroup(){
		int nmg = this.nowPage%this.pageNumberPerPageGroup;
		int nowPageGroup=0;
		if(nmg==0){
			nowPageGroup=this.nowPage/this.pageNumberPerPageGroup;
		}else{
			nowPageGroup=this.nowPage/this.pageNumberPerPageGroup+1;
		}
		return nowPageGroup;
	}
	
	/**
	 * 현재 페이지가 속한 페이지 그룹의 시작 페이지 번호를 return 한다.
	 */
	public int getStartPageOfPageGroup(){
		int nowPageGroup=getNowPageGroup();
		int startPage = this.pageNumberPerPageGroup*(nowPageGroup-1)+1;
		return startPage;
	}
	
	/**
	 * 현재 페이지가 속한 페이지 그룹의 마지막 페이지 번호를 return 한다.
	 */
	public int getEndPageOfPageGroup(){
		int nowPageGroup=getNowPageGroup();
		int endPageofPageGroup = nowPageGroup*this.pageNumberPerPageGroup;
		if(getTotalPage()<endPageofPageGroup){
			endPageofPageGroup=getTotalPage();
		}
		return endPageofPageGroup;		
	}
	
	/**
	 * 이전 페이지 그룹이 있는지 체크하는 메서드 
	 */
	public boolean isPreviousPageGroup(){
		boolean flag = false;
		if(getNowPageGroup()>1){
			flag=true;
		}
		return flag;
	}
	
	/**
	 * 다음 페이지 그룹이 있는지 체크하는 메서드 
	 */
	public boolean isNextPageGroup(){
		boolean flag=false;
		if(getNowPageGroup()<getTotalPageGroup()){
			flag=true;
		}
		return flag;
	}	
	
	public String getKeyword() {
		return keyword;
	}
	
	public String getFlag() {
		return flag;
	}
	
	@Override
	public String toString() {
		return "PagingBean [nowPage=" + nowPage + ", contentNumberPerPage="
				+ contentNumberPerPage + ", pageNumberPerPageGroup="
				+ pageNumberPerPageGroup + ", totalContents=" + totalContents
				+ ", keyword=" + keyword + ", flag=" + flag + "]";
	}
	
}
